git 常用命令与使用场情

来源:互联网 发布:蚁群算法核心问题 编辑:程序博客网 时间:2024/06/05 17:31

git init
把当前目录变成Git可以管理的仓库。

git add <file>...
添加文件到本地仓库。(git add -A 把所有文件添加到仓库)

git commit -m "add a file"
把文件提交到仓库,以及对应的说明。

git commit -a
相当于git add -A, git commit -m, 打开一个文档,输入说明。

git status
查看当前工作平台的状态。

git diff readme.txt diff --git a/readme.txt b/readme.txtindex 46d49bf..9247db6 100644--- a/readme.txt+++ b/readme.txt@@ -1,2 +1,2 @@-Git is a version control system.+Git is a distributed version control system. Git is free software.

查看文件的修改

git log --graph --pretty=oneline --abbrev-commitcommit a80c8f866cb32b4e0352b82b59dbb836651350afAuthor: xxf <xxf@xxf.local>Date:   Thu Apr 14 22:25:30 2016 +0800    some practicecommit e2bc6c25ef14e4357a66286b4dddedde8f70904eAuthor: xxf <xxf@xxf.local>Date:   Thu Apr 7 00:05:03 2016 +0800    some practice code

查看版本库的状态

git reset --hard HEAD^git reset --hard e2bc6c25

版本回退。


  1. HEAD表示当前版本
  2. 上一个版本是HEAD^
  3. 上上一个版本是HEAD^^
  4. 往上100个版本,写成HEAD~100。

git refloga80c8f8 HEAD@{0}: commit: some practicee2bc6c2 HEAD@{1}: commit: some practice code95aebf6 HEAD@{2}: merge xxf: Fast-forward

查看命令历史。


使用场景:

  1. 当前所在版本为a
  2. 回退了到了前一个版本b
  3. 然后想再到版本a,用git log已经看不到a版本的信息了,只能看到b以前的。
  4. 用git reflog可以看到之前用过的命令,前面有commit id。
  5. 再用git reset –hard 即可。

git checkout -- <file>
把文件在工作区的修改全部撤销。这里有两种情况:

  1. file自修改后还没有被放到暂存区,撤销修改就回到和版本库一模一样的状态;
  2. file已经添加到暂存区后,又作了修改,撤销修改就回到添加到暂存区后的状态。

就是让这个文件回到最近一次git commit或git add时的状态。


使用场景:

在文件被误删之后,用此命令也可以恢复。


git reset HEAD readme.txt
把暂存区的修改撤销掉(unstage),重新放回工作区。


使用场景:

  1. git add <file>,
  2. 此时还没有commit,
  3. 使用以上命令,就会让file变为还没有add的状态。

git rm test.txt
删除这个文件。记得commit

ssh-keygen -t rsa -C "youremail@example.com"
.ssh目录里面有id_rsaid_rsa.pub两个文件,是SSH Key的秘钥对,id_rsa是私钥,id_rsa.pub是公钥。
id_rsa.pub的放在github中,可以和github建立连接。

git remote add origin git@github.com:michaelliao/learngit.git
添加远程库

git push -u origin master
把本地仓库的内容推送到远程。
第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来。

git clone git@github.com:michaelliao/gitskills.git
克隆远程仓库到本地。

git checkout -b devgit branch devgit checkout dev

创建并切换分支。

git branch
查看当前分支。

git merge dev
合并分支。

git branch -d dev
删除分支。

git merge --no-ff -m "merge with no-ff" dev
合并dev分支,–no-ff参数表示禁用Fast forward
Fast forward合并就看不出来曾经做过合并。

git stashgit stash listgit stash apply stash@{0}git stash pop

使用场景:

  1. 当前工作到一半,但内容还不能提交。
  2. 用git stash把内容放在list中。
  3. 然后做新的修改,完成后提交。
  4. 此时,要从list取出之前的做到一半的工作。
  5. apply不会从list中删除,pop会删除。

git branch -D <name>
删除一个没有被合并过的分支。

git remote -v
查看远程库的信息。

git branch --set-upstream dev origin/dev
指定本地dev分支与远程origin/dev分支的链接。


多人协作场景:
1. 首先,可以试图用git push origin branch-name推送自己的修改;
2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
3. 如果合并有冲突,则解决冲突,并在本地提交;
4. 没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
5. 如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch –set-upstream branch-name origin/branch-name。


git tag <tag name>
git tag -a v0.1 -m "version 0.1 released" 3628164
打标签,-a指定标签名,-m指定说明文字
git tag查看所有标签

git show v0.9
查看标签信息

git tag -d v0.1
删除标签

git push origin :refs/tags/v0.9
删除已经提交的tag,要先删除本地的,再删除远程的。

git rebase <branch>
合并分支,将本地的commit放在origin后面。
在rebase过程中会有conflicts,解决后用git add <file>
然后git rebase --continue继续rebase。
在这个过程中随时可以停止。
git rebase --abort
会将状态恢复到rebase之前。

git rebase --skip

git将单个文件恢复到历史版本:
1 git reset commit_id 文件路径
2 git checkout -- 文件路径

1 0
原创粉丝点击