git 使用随笔

时间:2021-08-24 11:47:35

/*将远端库git@github.com:myrepo/base.git从远端clone到本地*/
git clone git@github.com:myrepo/base.git

/*克隆版本库的时候,所使用的远程主机自动被Git命名为origin。如果想用其他的主机名,需要用git clone命令的-o选项指定*/
$ git clone -o jQuery https://github.com/jquery/jquery.git
$ git remote
jQuery

/*从远端库git@github.com:myrepo/myproject开一个branch到本地库*/
git remote add myrepo git@github.com:myrepo/myproject //关联远端库git@github.com:myrepo/myproject,并命名为myrepo
git fetch myrepo dev //获取远端库myrepo的dev分支到本地,本步骤可能不是必需
git checkout -b dev myrepo/dev //从myrepo/dev开一个名为dev的分支
/****************************************************************/
用 git remote rename 命令修改某个远程仓库在本地的简称,比如想把 pb 改成 paul
git remote rename pb paul

更改远程路径
git remote set-url myrepo git@github.com:myrepo/myproject

git remote rm paul //这个是删除远程分支,慎用。

/****************************************************************/
git pull myrepo dev:dev
//以下两个语句功能等同于git pull myrepo dev:dev
git fetch myrepo dev
git merge FETCH_HEAD

/****************************************************************/
我们经常有这样一种情况。
有个文件,我们必须入库,大家一起共享,但是呢。每个人本地的配置又是因自己本地的环境而异。这样的话,这个文件就很崩溃了。你要入库,通过.gitignore和excludes都不起作用。每次git status都会提示你修改,你又好上传。

对于这种情况,应该使用下面的命令:
git update-index --assume-unchanged FILENAME
这样,每个人,从库上取代码后,在自己本地都要执行一下上面的这个命令。这样,以后,你这个文件的修改,git 都会帮你忽略掉。

当然,哪一天,你希望你的修改要提交入库,那你也必须手动修改一下 这个文件的标志位:
git update-index --no-assume-unchanged FILENAME

/****************************************************************/
然而,我在用这样的方法忽略文件时,依然会有Changes not staged for commit:的提示,那是因为.gitignore只能忽略那些原来没有被track的文件,如果已经纳入了版本管理,修改.gitignore也是无效的。可以通过git update-index --assume-unchanged PATH(PATH是需要忽略的文件路径)命令去设置不要检查改文件(看到一个回答,说这样的做法是不对的)。或者(正确的方法?)使用git rm --cached file命令去去掉对该文件的版本管理。
/****************************************************************/
忽略文件:只能忽略untracked文件

【方式一】
在仓库目录下新建一个名为.gitignore的文件.gitignore文件对其所在的目录及所在目录的全部子目录均有效。通过将.gitignore文件添加到仓库,其他开发者更新该文件到本地仓库,以共享同一套忽略规则。

【方式二】
通过配置.git/info/exclude文件来忽略文件。这种方式对仓库全局有效,只能对自己本地仓库有作用,其他人没办法通过这种方式来共享忽略规则,除非他人也修改其本地仓库的该文件。

【方式三】
通过.git/config配置文件的core. Excludesfile选项,指定一个忽略规则文件(完整路径)。忽略规则在文件e:/gitignore.txt中(当然该文件名可以任意取)。
该方式的作用域是也全局的。

git rm --cached logs/xx.log
删除的是追踪状态,而不是物理文件,
然后再 git commit 变成untracked文件

/****************************************************************/

git stash //将当前分支工作状态放入stash,当前恢复到上一个commit的状态

git fetch myrepo/develop // 获取

git rebase myrepo/develop // 重新设置当前分支在myrepo/develop分支的切出点,如有冲突解决冲突

git stash pop // 恢复stash中的工作区,,如有冲突解决冲突
/****************************************************************/

git submodule init

git submodule update

/****************************************************************/
zsh的git常用简写命令

alias g='git'

alias ga='git add'
alias gaa='git add --all'
alias gapa='git add --patch'

alias gcmsg='git commit -m'
alias gc='git commit -v'

alias gb='git branch'
alias gbss='git bisect start'

alias gr='git remote'

alias grb='git rebase'

alias gdw='git diff --word-diff'

alias gf='git fetch'

alias gp='git push'

alias gm='git merge'

alias gl='git pull'