git 常用命令与使用场情

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.txt
index 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-commit
commit a80c8f866cb32b4e0352b82b59dbb836651350af
Author: xxf <xxf@xxf.local>
Date:   Thu Apr 14 22:25:30 2016 +0800
    some practice
commit e2bc6c25ef14e4357a66286b4dddedde8f70904e
Author: 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 reflog
a80c8f8 HEAD@{0}: commit: some practice
e2bc6c2 HEAD@{1}: commit: some practice code
95aebf6 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 dev
git branch dev
git 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 stash
git stash list
git 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值