首页 > 其他分享 >Git极简教程 Git技巧

Git极简教程 Git技巧

时间:2022-10-27 12:46:15浏览次数:75  
标签:极简 教程 Git -- GitHub git push commit

Git极简教程 Git技巧

前几篇介绍的是极简git使用方法,还有一些git使用过程中的奇技淫巧,每一个单独成文又内容太少,在这里直接列出来吧。

  • git push --all

可以一次性把本地所有分支push上去。

  • git push :branch_name

push的分支名前面加上冒号,可以删除远端的分支。对tag同样适用。

  • git log --all --name-only | grep filename

可以在所有的提交记录里面查找一个文件。如果某一个文件曾经存在,但是现在已经被删了,可以通过这个来找到它在哪里。

  • git rm --cached filename

取消追踪一个文件

  • git log --filename

只显示这个文件的改动情况。更极端的,git log -L <start>,<end>:<file> 可以显示某一些行的改动情况,但是粒度太细了,应该不常用。

  • git log --graph

用图的方式查看提交记录,对于有merge的多个分支的提交更直观。

  • git log -5 查看最近5个修改


  • git log HEAD~12..HEAD~10 查看从前12个修改到前10个修改之间的修改。重在三个点,head~12可以用任何commit id表示,包括完整的hash值、tag或者branch名等等。


  • git diff 显示哪些文件被改动了


  • git diff --word-diff 显示单词级别的改动

在改论文的时候特别有用,因为latex一段就是一句话,改一个单词的时候必须用git diff --word-diff才看得清晰。通用的语法格式为 git diff basebranch targetbranch -- file ,以basebranch为基准,比较targetbranch有什么改动,-- 后面是针对某一特定文件的改动。

其实Git很多操作都可以对文件单独做,语法就是在后面加上 -- filename 。

比如 git checkout commitid -- filename, 直接找出某一个commit_id状态下的那一个文件,而不用影响其它文件。git reset commitid -- file也可以达到同样的效果。

  • git blame -L start[,end] -- file

查看file中的[start,end]行都是哪些人改过。定位到bug之后可以用来追责。

  • git archive -o archive.zip master

相当于给当前状态做一份快照。GitHub上的下载zip功能,可能就是用这个命令实现的。

  • git config --list --show-origin

可以看到所有的配置以及具体是在哪个配置文件中

  • git commit --amend

提交一个commit,与上一个commit合并

可以用来替代 git stash 了。git stash 用处不大。

  • git commit -a -m 'msg'

等同于先 git add -u 再git commit -m 'msg'

  • squash操作的若干种写法

squash的意思是压扁,把若干个commit压扁成一个commit。比如连着三个commit分别是add func1, add func2, add func3, 那么可以压扁成一个commit,叫做 add some funcs。

可以采用git commit --amend一个一个压缩。

也可以采用git rebase -i head~n 的方式压缩最近的n个commit。

GitHub 上面,对一个pr可以squash and commit,就是这里的squash的意思。

  • 发起pr的时候先rebase一下,自己处理冲突,是对别人的尊重

git fetch origin && git rebase origin/master

  • git cherry-pick commit_id

只把某一个commit的内容拿过来。比如其他branch上有一个commit是实现了一个函数,只想把那个函数拿过来而不想合并整个branch的时候有用。

  • git merge / git pull / git rebase / git cherry-pick 都是merge系列的操作,都可以加上 --continue / --abort 参数来继续/取消。
  • 撤销已经提交的更改

git reset --hard HEAD~n 撤销n个更改

如果更改已经push到云端,可以 git reset --hard HEAD~n && git push origin --force

  • windows下新建.gitignore文件报错

在文件管理器里面新建文本文件,改名为 .gitignore, Windows会说缺少文件名。所以,还是打开命令行,用 touch .gitignore来创建更好。

与GitHub相关的一些操作

  • https clone vs. ssh clone

对于使用 https clone 的,每次push或者pull的时候都需要输入账号密码。

ssh clone 的,只要配置好公钥,就可以免密码。

  • 在GitHub评论区引用一个commit

只需要写出完整的commit的编号,GitHub会自动识别成commit并加上超链接。

  • 直接下载GitHub上的单个文件

把url里面的blob改成raw,就可以直接另存为文件,或者用wget命令行下载了。

  • git pull origin master --allow-unrelated-histories

一般用Git的时候第一个命令是 git clone, 也就是先在GitHub上有一个仓库了。如果相反,是本地有一个仓库,想放在GitHub上,那可以在GitHub上新建一个空白的仓库,然后执行这一句,再git push

  • 用url直接在GitHub上开pr

http://github.com/base_user/base_repo/compare/base_branch…head_user:head_branch

访问这个url,就能直接发起一个pr。

  • pip直接安装一个GitHub上的包

例如下面的pytorch的仓库,clone那个按钮下有两个url,一个是https的url,另一个是鼠标放在download zip那里的时候会有一个url。

pip install https://github.com/user/repository/archive/branch.zip 或者 pip install git+https://github.com/user/repository.git 都可以。

https://zhuanlan.zhihu.com/p/105966867

标签:极简,教程,Git,--,GitHub,git,push,commit
From: https://www.cnblogs.com/sunny3158/p/16831814.html

相关文章