常用git命令

本文只列举了一些基本常用的,欢迎补充和讨论。

从切分支到代码提交,一般会用到以下这些命令 :

1. git fetch

  • 指从远程仓库下载最新的代码并更新本地仓库的远程跟踪分支(如origin/master)。它并不会自动合并(merge)本地分支和远程跟踪分支,而是只是把最新的代码拉到本地。

2. git checkout -b feat/xxx origin/master

  • git checkout -b feat/xxx 是以你当前所在分支为主,来切出一条新的分支。如果你当前分支是feat/yyy, 就是以feat/yyy 为主,切出一条名叫feat/xxx的分支。
  • git checkout -b feat/xxx origin/feat/xxx 是以本地仓库跟踪的远程分支feat/xxx为主,创建分支。
    但是创建的新分支并不一定是远程分支的最新提交,需要先使用git fetch命令从远程仓库获取最新的提交。

3. git branch

可以查看本地有哪些分支

git branch -r 查看远程有哪些分支

4. git status

查看当前工作区和暂存区的状态

5. git add . 或者 git add [file]

git add . 是将工作区所有文件添加到暂存区。

git add config/config.ts 是将config/config.ts文件添加到暂存区。

6. git reset config/config.ts

将暂存区的config/config.ts文件修改放回工作区

7. git checkout . 或者 git checkout [file]

git checkout . 丢弃工作区所有的改动

git checkout config/config.ts 丢弃工作区config/config.ts的改动

8. git commit -m "feat: xxxxx"

  • 将暂存区的文件提交到本地仓库,并添加提交信息。
  • git commit --amend 修改上一次提交信息

9. git push origin HEAD:feat/xxx 与 git push origin HEAD:refs/for/feat/xxx

  • git push origin HEAD:feat/xxx 将当前分支的最新提交推送到远程仓库的feat/xxx分支。
  • HEAD: 是一个特别的指针,它是一个指向你正在工作的本地分支的指针,可以把它当做本地分支的别名,git这样就可以知道你工作在哪个分支
  • refs/for :意义在于我们提交代码到服务器之后是需要经过code review 之后才能进行merge的

10. git pull origin master --no-ff (同步分支用这个)

  • 将远程仓库的master分支的最新提交拉取到本地,并进行合并。
  • 使用--no-ff选项可以保留合并提交,即创建一个新的合并提交来表示分支的合并历史,而不是简单地移动分支指针。这样可以更清晰地记录分支的合并过程。
  • git pull 命令相当于先执行git fetch,然后再执行git merge。

11. git cherry-pick 2ceb59ab7

将指定的提交(commit)应用到当前分支上。例如想要别人分支上的某个commit修改。

12. git revert 2ceb59ab7

撤销commit SHA-1哈希值为2ceb59ab7引入的更改。

13. git stash

现在想要切换分支,但是还不想要进行提交,运行 git stash,将当前的工作进度保存起来,然后在需要的时候再重新应用

$ git stash

可能需要加 -u,来将工作区中未追踪的文件(新文件)一同保存在 stash 中 git stash -u

重新使用刚才暂存的内容,可以使用git stash pop

$ git stash pop

在这时,你能够轻易地切换分支并在其他地方工作;你的修改被存储在栈上。 要查看暂存的东西,可以使用 git stash list:

$ git stash list 
stash@{0}: WIP on master: 049d078 added the index file 
stash@{1}: WIP on master: c264051 Revert "added file_size" 
stash@{2}: WIP on master: 21d80a5 added number to log

在本例中,有两个之前做的暂存,所以你接触到了三个不同的暂存工作。 可以通过原来 stash 命令的帮助提示中的命令将你刚刚暂存的工作重新应用:git stash apply。 如果想要应用其中一个更旧的暂存,可以通过名字指定它,像这样:git stash apply stash@{2}。 如果不指定一个暂存,Git 认为指定的是最近的暂存:

$ git stash apply 
# On branch master 
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed) 
# 
#      modified:   index.html 
#      modified:   lib/simplegit.rb #

可以看到 Git 重新修改了当你暂存时撤消的文件。

tips:vscode内置的git 管理工具可以很方便的进行stash操作

其他

1. 关于git pull 和 git push

(pull 和 push如果没有指定远程分支的,会默认走 .git/config里关联的远程分支)

可以通过cat .git/config 看到分支关联的远程分支

第一次推送 git push origin HEAD:feat/817-revert,会创建一个远程分支feat/817-revert

可以通过 git branch --set-upstream-to=origin/feat/817-revert 设置关联的远程分支

后续就可以省略远程分支名字,直接git push

  1. 推荐 vscode 的 git 插件 Git History、 GitLens
  2. sourcetree下载链接:Sourcetree | Free Git GUI for Mac and Windows
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值