git 常用命令大全
创始人
2024-05-30 05:09:11
0

目录

git clone

git config

git remote

git status

git add

git rm

git mv

git commit

git branch

切换分支工作

git push

git pull

撤销git reset


git clone

下载一个项目和它的整个代码历史:git clone [url]

查看远程仓库信息:git remote -v

1、http/https方式:需要手动输入用户名和密码2、ssh方式:本地需要生成ssh key私钥和公钥,并在github账号上添加公钥(1) 查看是否存在ssh key,若~/.ssh存在id_rsa和id_rsa.pub则存在cd ~/.sshls(2) 若不存在则需要生成,生成ssh key私钥和公钥方法:ssh-keyen -t rsa -C "cliu@birentech.com"(3) 然后把公钥id_rsa.pub内容复制到github/settings/ssh and gpg keys里面,再验证是否设置成功:ssh -T git@github.com

git config

Git的设置文件为.gitconfig,它可以在用户主目录下(全局配置),也可以在项目目录下(项目配置)

config 配置有system级别、global(用户级别)和local(当前仓库)三个,设置先从system->global->local ,底层配置会覆盖顶层配置

1.查看系统config:git config --system --list2.查看当前用户(global)配置:git config --global  --list3.查看当前仓库配置信息:git config --local  --list4.查看当前配置信息:git config --list5.编辑Git配置文件,将打开编辑器:git config -e [--global]6.设置提交代码时的用户信息:$ git config [--global] user.name "[name]"$ git config [--global] user.email "[email address]"

git remote

查看远程仓库:git remote -v添加远程仓库:git remote add  重命名远程仓库:git remote rename  移除远程仓库:git remote remove 修改远程仓库url:git remote  set-url  

git status

当执行 git status 的时候,返回结果大致可分为3个部分:1、拟提交的变更:这是已经放入暂存区,准备使用 git commit 命令提交的变更,最后git push的内容将以这个拟提交的变更为主(包括modified, new file, deleted等)2、未暂存的变更:这是工作目录和暂存区快照之间存在差异的文件列表3、未跟踪的文件:这类文件对于 Git 系统来说是未知的,也是可以被忽略的

git add

# 添加指定文件到暂存区
$ git add [file1] [file2] ...
# 添加指定目录到暂存区,包括子目录
$ git add [dir]
# 添加当前目录的所有文件到暂存区
$ git add .
# 添加每个变化前,都会要求确认,对于同一个文件的多处变化,可以实现分次提交
$ git add -p

git rm

将文件从工作区和暂存区中删除:git rm 如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f停止追踪指定文件,但该文件会保留在工作区:git rm --cached [file]若此时git push到远程仓库了,会deleted tmp3.txt

git mv

若文件已经提交到暂存区了,想改文件名称,可通过git mv来同步更改工作区文件名称和暂存区文件名称$ git mv [file-original] [file-renamed]

git commit

git commit 命令主要是将暂存区里的改动提交到本地的版本库。

每次使用 git commit 命令我们都会在本地版本库生成一个 40 位的哈希值,这个哈希值也叫 commit-id,通过git log可查看所有commit-id

commit-id 在版本回退的时候是非常有用的,它相当于一个快照,可以在未来的任何时候通过与git reset 的组合命令回到这里

git commit -m “message” :提交到版本库,并指定提交信息。git commit -a -m “message”:-a 参数表示,可以将所有已跟踪文件中的执行修改或删除操作的文件都提交到本地仓库,即使它们没有经过 git add 添加到暂存区。git commit --amend  :追加提交,它可以在不增加一个新的 commit-id 的情况下将新修改的代码追加到前一次的 commit-id 中。

git branch

查看分支

列出所有本地分支:git branch列出所有远程分支:git branch -r列出所有本地分支和远程分支:git branch -a查看本地分支对应的上游分支:git branch -vv查看本地分支和远程分支关联情况:git branch -avv

新建分支

新建一个分支,但依然停留在当前分支:git branch [branch-name]切换到指定分支,并更新工作区:git checkout [branch-name]新建一个分支,并切换到该分支:git checkout -b [branch]重命名分支:git branch -m  

删除本地分支

git branch -d git branch --delete 

删除远程分支:

git push origin --delete [branch-name]git本地分支与远程分支关联(给当前分支设置上游分支):git branch --set-upstream-to=origin/dev(dev关联分支名称)git branch -u /取消上游分支:git branch --unset-upstream 

切换分支工作

场景:你正在自己的分支(branch_v1.2)上做着功能的开发,此时需要协助他人在分支branch_v1.1做修改,步骤如下

(1) 在branch_v1.2分支,保存自己的修改:
git stash -u 【包括未跟踪的文件也会被存储】
git stash --all 【ignored files也会被存储】(2) 切换到他人分支branch_v1.1:
git checkout -b sucloud_v1.1 origin/branch_v1.1(3) 接着就可以在branch_v1.1分支上正常修改,提交,推送更新(4) 完成之后就可以切回到自己的分支branch_v1.2继续之前的工作

git push

git push <远程主机名> <本地分支名>:<远程分支名>

git push <远程主机名> <本地分支名>
如果远程分支被省略,如上则表示将本地分支推送到与之存在追踪关系的远程分支(通常两者同名),如果该远程分支不存在,则会被新建git push <远程主机名>
如果当前分支与远程分支存在追踪关系,则本地分支和远程分支都可以省略,将当前分支推送到origin主机的对应分支git push
如果当前分支与多个主机存在追踪关系,则可以使用-u选项指定一个默认主机,这样后面就可以不加任何参数使用git push。git push <远程主机名>  :<远程分支名>
如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支。

git pull

git pull <远程主机名> <远程分支名>:<本地分支名>

git pull = git fetch + git merge

在使用git pull拉取服务器最新版本时,如果出现error: Your local changes to the following files would be overwritten by merge: ... Please, commit your changes or stash them before you can merge.错误时,代表这代码冲突了,本地修改了代码导致无法覆盖服务器上的。

代码冲突体现在:比如我和同事本地都拉取了最新的notebook.py文件。

场景1:只有我本地修改了这个notebook.py,在去pull或push是不会冲突的;

场景2:同事在他本地修改了这个notebook.py文件并commit和push到远程仓库了,然后我在本地修改了这个notebook.py文件,想push上去会push不上去,需要先pull下来,但pull下来时也会有冲突。

此时需要可以参考下面方法。

(1) 如果希望保留生产服务器上所做的改动,仅仅并入新配置项, 处理方法如下:git stash -ugit pullgit stash pop注意其中git stash带的参数含义:If the --include-untracked (-u) option is used, all untracked files are also stashed and then cleaned up with git clean, leaving the working directory in a very clean state.If the --all option is used instead then the ignored files are stashed and cleaned in addition to the untracked files.(2) 如果要直接使用服务器上最新版本,那么可以选择直接覆盖git reset --hardgit pull

注意:git stash操作默认不会存储未跟踪的文件!!!

我出错过一次导致我的新增文件都丢失了,后面通过下面方法找回来了

$ git fsck --lost-found$ git show 126f92e2ee734c6306a224dbafc774146530b70f$ git merge 126f92e2ee734c6306a224dbafc774146530b70f

撤销git reset

git reset默认为:git reset --mixed撤销 git add撤销所有的已经 add 的文件:git reset HEAD .撤销某个文件或文件夹:git reset HEAD  撤销 git commitgit reset --soft HEAD^HEAD^的意思是上一个版本,也可以写成HEAD~1

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...