GIT暂存
git stash //添加追踪文件已暂存区,不包括未追踪和忽略文件
git stash save "message" //推荐写上message
git pop //从堆栈中取最近一次暂存,并且删除暂存
git stash apply //同上,但并不删除暂存数据
git stash apply stash@{0} //同上,可指定恢复其它暂存
git stash list //查看所有暂存
git stash drop stash@{0} //删除指定暂存
git stash clear //清空所有暂存
git stash show //查看diff,同git stash show stash@{0}
git stash show -p //查看详细diff,同git stash show stash@{0} -p
git stash branch newBranch //暂存变分支
git stash -u //暂存untracked文件
git stash -a //暂存所有文件
GIT 分支
git branch -a #查看所有分支
git branch -m old_name new_name #重命名本地分支
git push origin :old_branch #删除远程分支
git push origin new_branch #将本地新分支推送至远程
git checkout -b new_br #创建并切换至分支new_br
git checkout master #切换至master分支
git merge new_br #将new_br分支合并至当前master分支
git branch -d new_br #将合并完成后不用的分支删除
git mergetool #合并冲突时可用的工具
git add #冲突解决后提交
git push origin :serverfix #删除远程分支
git rebase master myfix #将myfix分支在master分支上重演,相当于清除了myfix分支以前的提交历史,所以不能在已发布对象上操作,以防止别人依赖这个分支。
GIT打标签
git tag -a v1.0 -m 'base function finished.'
git tag -a v1.2 9fceb02 //给以往版本加上标签
git tag //查看已有标签
git show v1.0 //查看v1.0信息
git push origin v1.0 //推送本地标签至远端
git push origin --tags //推送本地所有标签至远端
取消某文件的追踪
git rm --cached readme.txt 删除指定文件的跟踪,保留本地文件。
git rm --f readme.txt 删除指定文件的跟踪,并且删除本地文件。
彻底删除历史提交记录的方法
git log 查看要回退到哪个版本,记下code:712ec235d471d7c3ae3d397dbd254063151e5bd9
git reset --hard 712ec235d471d7c3ae3d397dbd254063151e5bd9
git push origin HEAD --force
GIT EXPORT导出文件方法
git archive --format zip -o site-$(git log --pretty=format:"%h" -1).zip HEAD
只CLONE部分文件夹的方法
# 初始化空库
mkdir devops
cd devops/
git init #初始化空库
# 拉取remote的all objects信息
git remote add -f origin https://gitee.com/user/myPython.git
# 开启sparse clone并设置需要pull的目录 devlops
git config core.sparsecheckout true #开启sparse clone
echo "devops" >> .git/info/sparse-checkout #设置需要pull的目录,*表示所有,!表示匹配相反的
more .git/info/sparse-checkout
# 将origin 端,由第三步(文件 .git/info/sparse-checkout)设置的目录下的文件pull到本地
git pull origin master
git branch --set-upstream-to=origin/master master
//问题提示:SSL certificate problem: self signed certificate
git config --global http.sslVerify false
GIT初始化:
SSH-KEY(4096长度):
ssh-keygen -t rsa -C "user@163.com" -b 4096
cat ~/.ssh/id_rsa.pub
Git 全局设置
git config --global user.name "xxx"
git config --global user.email "user@163.com"
get config --list
GIT拉取
创建新版本库
git clone https://github.com/user/myRepo.git
cd testRepo
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
已存在的文件夹
cd existing_folder
git init
git remote add origin https://gitee.com/user/myPython.git
git add .
git commit -m "Initial commit"
git push -u origin master
已存在的 Git 版本库
cd existing_repo
git remote rename origin old-origin
git remote add origin https://github.com/user/myRepo.git
git push -u origin --all
git push -u origin --tags
设置GIT push时免密:
Linux:
vim ~/.git-credentials
https://{username}:{password}@gitee.com
git config --global credential.helper store
打开~/.gitconfig文件,会发现多了一项,然后再PULL输入一次以后就用输入了:
[credential]
helper = store
Windows:
方法同上面,只是第一步创建git-credentials有点不同。在%HOME%目录中,一般为C:\users\Administrator,也可以是你自己创建的系统用户名目录,
反正都在C:\users\中。文件名为.git-credentials,由于在Window中不允许直接创建以"."开头的文件,所以需要借助git bash进行,打开git bash客户端,
进行%HOME%目录,然后用touch创建文件 .git-credentials, 然后后面的操作同上面。
设置别名
git config --global -e
#写入如下内容:
[alias]
st = status
co = checkout
br = branch
mg = merge
ci = commit
md = commit --amend
dt = difftool
mt = mergetool
last = log -1 HEAD
cf = config
line = log --oneline
latest = for-each-ref --sort=-committerdate --format='%(committerdate:short) %(refname:short) [%(committername)]'
ls = log --pretty=format:\"%C(yellow)%h %C(blue)%ad %C(red)%d %C(reset)%s %C(green)[%cn]\" --decorate --date=short
hist = log --pretty=format:\"%C(yellow)%h %C(red)%d %C(reset)%s %C(green)[%an] %C(blue)%ad\" --topo-order --graph --date=short
type = cat-file -t
dump = cat-file -p