git一些基本操作(原创)

撰文不易,转载务必注明出处!

1.Some frequently instructions


1.git remote -v //查看自己的本地的代码对应远程的仓库
2.git fetch //将远程(original)的代码fetch到本地一个看不见的地方。然后可以进行对比(diff)
3.git diff original/master master //远程的master 和 本地 master进行对比
4.git status
5.git pull         // gitpull = git fetch + git merge,将远程的代码拉下来,并合并
- original 是自己创建的远程仓库
- upstream 是自己从别人clone的远程项目地址 
6.git branch --set-upstream-to=origin/<branch> master //设置本地分支master跟踪origin的'branch'分支
7.git init --bare 生成一个服务器仓库,和本地仓库的.git是一样的。从本地push的文件在服务器仓库中是看不到的。只有通过如下命令才能看到:git ls-tree master
8.git diff可以对分支、文件等进行比较。
9.git checkout 可以用于检出某个分支、某个commit、某个commit时候的文件
10.git branch -vv 查看本地分支及追踪的分支
11.git push 将本地的分支推到remote, git push -f 强行推//这个命令万不得已不要用

2.remote and local association

  • 1.在本地目录下关联远程repository
git remote add origin git@github.com:git_username/repository_name.git 
//origin 可以改成别的名字,一个本地仓库可以和远程多个仓库关联,远程仓库的名字必须是不同的
  • 2.取消本地目录下关联的远程库
git remote remove origin 

  example

i.从远程develop分支clone到本地文件夹dir,然后git remote remove origin 取消关联。
ii.在远程新建一个空的仓库。将dir文件推到远程仓库 :

    git init
    git remote add origin git@192.168.1.102:wangyuzhe/Video_Stabilizer_TX2.git
    git add .
    git commit -m "initial commit"
    git push -u origin master
error: src refspec master does not match any.
error: failed to push some refs to 'git@192.168.1.102:wangyuzhe/tracking_libface.git'

  因为本地是develop分支。

- 执行
    git push -u origin --all  
    git push -u origin --tags 

  将本地develop分支推到远程develop分支(如果没有就创建)

  • 如果想把本地推到远程master分支上,则需执行
git push -u origin develop:master (u只需第一次加) 

3.在GitHub上管理项目

  [参考博客]http://www.cnblogs.com/mengdd/p/3447464.html


  • 新建repository

    touch README.md
    git init

  • 初始化repository
  git add README.md   将README.md加入到缓存区
  (可以用git add --a将所有改动提交到缓存(注意是两个杠))
 
  git commit -m "first commit"
  提交改变,并且附上提交信息"first commit"

  • Push
  git remote add origin https://github.com/XXX(username)/YYYY(projectname).git

  加上一个remote的地址,名叫origin,地址是github上的地址(Create a new repo就会有。因为Git是分布式的,所以可以有多个remote.

    git push -u origin master

  将本地内容push到github上的那个地址上去。参数-u,用了参数-u之后,以后就可以直接用不带参数的git pull从之前push到的分支来pull。
此时如果origin的master分支上有一些本地没有的提交,push会失败。
  所以解决的办法是, 首先设定本地master的上游分支:

  git branch --set-upstream-to=origin/master
  或者
  git branch --set-upstream-to=origin/master develop    //设置本地分支develop跟踪origin/master 远程分支

然后pull:

  git pull --rebase

最后再push:

  git push

push的方法

- push方法1:  

  现在如果想直接Push这个develop分支上的内容到github
      git push -u origin
  如果是新建分支第一次push,会提示:
      fatal: The current branch develop has no upstream branch.
      To push the current branch and set the remote as upstream, use
  输入下面这行命令,
      git push --set-upstream origin develop
  然后输入用户名和密码,就push成功了。以后的push就只需要输入git push origin


- push方法2:

  比如新建了一个叫dev的分支,而github网站上还没有,可以直接:
      git push -u origin dev
  这样一个新分支就创建好了。


- push方法3:

  提交到github的分支有多个,提交时可以用这样的格式:
      git push -u origin local:remote
  比如:
      git push -u origin master:master
  表明将本地的master分支(冒号前)push到github的origin的master分支(冒号后)。
  如果左边不写为空,将会删除远程的右边分支。

  • 分支

新建好的代码库有且仅有一个主分支(master),它是自动建立的。
可以新建分支用于开发:

  git branch develop master
新建一个叫develop的分支,基于master分支

切换到这个分支:

  git checkout develop

现在可以在这个develop分支上做一些改动,并且提交。
***注意***这两步可以合并成一步,可以新建一个分支develop2,同时切换到这个分支:

    git checkout -b develop2 develop

删除分支

  git branch可以查看所有的分支
  git branch -d develop2 将develop2分支删除

  • git clone

Clone
  使用git clone+github地址的方法,项目默认只有master分支。git branch也只有master
  要看所有的分支:git branch -a或者是git branch -r
  这时候要新建一个分支,叫做dev,基于远程的dev分支:git checkout -b dev origin/dev
  • git tag
tag
  git tag tagname develop
  git tag中的两个参数,一个是标签名称,另一个是希望打标签的点develop分支的末梢。
  • git merge
合并分支
  1.先转到主分支:
      git checkout master
  2.然后把develop分支merge过来:
      git merge --no-ff develop
  参数意义:
  - 不用参数的默认情况下,是执行快进式合并。
  - 使用参数--no-ff,会执行正常合并,在master分支上生成一个新节点。
  merge的时候如果遇到冲突,就手动解决,然后重新add,commit即可。

4.git回滚到任意版本

https://www.cnblogs.com/wancy86/p/5848024.html

git回滚到任意版本
先显示提交的log
$ git log -3
commit 4dc08bb8996a6ee02f
Author: Mark <xxx@xx.com>
Date:   Wed Sep 7 08:08:53 2016 +0800

    xxxxx

commit 9cac9ba76574da2167
Author: xxx<xx@qq.com>
Date:   Tue Sep 6 22:18:59 2016 +0800

    improved the requst

commit e377f60e28c8b84158
Author: xxx<xxx@qq.com>
Date:   Tue Sep 6 14:42:44 2016 +0800

    changed the password from empty to max123
回滚到指定的版本
git reset --hard e377f60e28c8b84158
强制提交(一般不用,会强行覆盖远程仓库)
git push -f origin master

5.git clone, push,pull两种方式

1.https:需要每次都输入帐号、密码
1.ssh非对称加密:配好ssh key(ssh-keygen),将public的key贴上去生成key的时候会需要填写passpharse(密码)。如果填写,就需要每次(push、pull)输入这个密码。然后利用ssh agent来省略输入这个密码。

6.git reset

 git reset --hard//回退到上一次commit状态,所有没有commit的文件都会被重置

      1.touch A.tx
        vim A.txt //写入1
        git reset --hard//A.txt还在,内容不变,原因是A.txt没有被跟踪(没有add)
     
      2. touch A.tx
        vim A.txt //写入1
        git add A.txt
        git reset --hard//A.txt不在,仓库回到上一次commit状态
      
      3.touch A.tx
        vim A.txt //写入1
        git add A.txt
        git commit -m "commit A.txt"
        git reset --hard//A.txt不变,work tree clean。因为“最后一次”commit变成了提交A.txt这次了
    git reset --mixed
	    1.与--hard相同
	    2.touch A.tx
	      vim A.txt //写入1
	      git add A.txt
	      git reset --mixed//A.txt在,从stage退回到没有跟踪状态。
	    3.与--hard相同
    git reset --soft  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值