1.下载git:https://git-scm.com/downloads
2.打开git bash运行:
ssh-keygen -t rsa
然后输入密码,生成密钥,然后去提示的路径里面找到id_rsa.pub,把它里面的信息复制到git的SSH Keys上
3.git上创建一个仓库
4.git clone下来
git config --global user.name "yourname"
git config --global user.mail "yourname@qq.com"
-- 查看所有配置
git config --list
-- 删除配置
git config --global unset user.mail
在目录里面再开一个git bash(注意不要在原来git clone 里面的命令行操作)输入:
-- 添加到暂存区
git add *
-- 提交本地仓库
git commit -m "test"
-- 提交远程仓库
git push
-- 将最新的远程仓库代码拉下来并和本地合并
git pull (等于git fetch + git merge)
-- 和merge功能类似,具体区别参考链接,日志更干净一些
git pull -r (等于git fetch + git rebase)
-- 查看状态
git status
其他可以参考:Git使用Merge和Rebase区别及心得技巧 - 知乎
-- 对比工作区和暂存区
git diff
-- 对比代码库和暂存区
git diff --staged
-- 对比两次提交区别
git diff <commit1><commit2>
大致如下图所示,对比不同commit的区别,比较常用的应该还是对比工作区和代码库的内容。
-- 查看日志,有完整的信息(作者、时间等等)
git log
-- 查看commit日志信息(包含commit id),按q退出
git log --oneline
git log --oneline --graph (可以看到画出来的整个分支变化情况)
-- 如果需要撤销git add的文件,此时本地的文件不会有变化
git reset HEAD XXX.py
-- 如果需要再恢复本地的文件
git checkout -- XXX.py
这里注意如果希望多次commit改成一次commit,可以使用git reset,reset后面的内容可以用git log来获取,比如下图所示,如果想回到cfbcf49a8682635c69e462cc80437118450d20f6这次的提交状态,使用git reset cfbcf49a8682635c69e462cc80437118450d20f6
就可以了。
-- 多次commit改成一次commit
-- 1.先回滚到最初的commit,用git log --oneline查看commitid
git reset XXXXX
-- 2.再重新add和commit即可
git add *
git commit -m "XXXX"
-- 3.强制push分支覆盖远端(慎重使用)
git push -f
回滚远端记录:
git revert <要回滚的commitID,获取方式同样是git log>
-- 或按下面这样,直接回滚近2次提交并生成一个新的记录
git revert HEAD~2
-- 本地创建分支(远端创建分支可以在web上直接点按钮实现)
git branch 分支名
-- 本地切换分支(切换之后本地的文件会随之变化)
git checkout 分支名 //切换分支
git checkout -b 分支名 //切换并创建本地新分支
-- 把本地的分支提交到远端
git push origin 分支名
git push -u origin 分支名
git push origin 分支名
和 git push -u origin 分支名
都用于将指定分支的更改推送到远程仓库。它们之间的区别在于 -u
选项的使用,这个选项用于设置上游(upstream)跟踪分支。
git push origin 分支名
:将指定分支的更改推送到远程仓库,但不设置上游跟踪分支。在下次推送时,您仍然需要指定远程仓库和分支名。git push -u origin 分支名
:将指定分支的更改推送到远程仓库,并设置上游跟踪分支。这意味着 Git 将记住在将来的 git pull
和 git push
操作中使用相应的远程仓库和分支。在设置了上游跟踪分支之后,您可以仅使用 git pull
和 git push
命令(无需指定远程仓库和分支名)来拉取和推送更改。总之,git push -u origin 分支名
在推送分支的同时设置上游跟踪分支,这样在后续的 git pull
和 git push
操作中,无需指定远程仓库和分支名。而 git push origin 分支名
只推送分支,不设置上游跟踪分支。
此外,在分支里面push的话,如果远程仓库没有分支,他会提醒:
fatal: The current branch old_version has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin XXXX
To have this happen automatically for branches without a tracking
upstream, see 'push.autoSetupRemote' in 'git help config'.
这个时候,按照他提示的命令运行一遍就可以了。
-- 从远端拉取分支并覆盖本地
git fetch -p
-- 删除【已经合并】的本地分支
git branch -d 分支名
-- 强制删除【未合并】的本地分支,把小d改成大D
git branch -D 分支名
-- 查看远端分支和本地分支
git branch -a
-- 先切换分支到master
git checkout master
-- 把XXX分支合并到当前分支。注意此时可能会有文件冲突,可以通过git status看冲突的文件。
-- 对于冲突的文件git会在文件里记录两种分支的内容,需要打开文件编辑好自己需要的之后保存,
-- 再push到远端。
git merge XXX
git commit
git push
.gitignore中已经标明忽略的文件目录下的文件,git push的时候还会出现在push的目录中,或者用git status查看状态,想要忽略的文件还是显示被追踪状态。
原因是因为在git忽略目录中,新建的文件在git中会有缓存,如果某些文件已经被纳入了版本管理中,就算是在.gitignore中已经声明了忽略路径也是不起作用的,这时候我们就应该先把本地缓存删除,然后再进行git的提交,这样就不会出现忽略的文件了。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。