Gitee
没有记录(比较简单),Git
搭建服务器也没有记录(还不太会玩 linux
,有错误发出来对大家就不好啦)
有个 SourceTree
的软件可以帮助你更好的操作 git
ssh
是在 工具 -> 选项 里面添加 openSSH
正文
git
版本git version
git
仓库git config --global user.name "Your Name"
git config --global user.email "[email protected]"
git config --list
git init
git add 文件名 //这里文件后缀加了就要求要准确,不加不冲突就行了
git add . //添加全部文件
Git
(当前分支分支)git commit -m "描述语句,最好不要省略"
git status
git diff 文件名
q
即可退出日志查看状态git log //加上 --pretty=oneline 使内容更加的简洁
git log --graph --pretty=oneline --abbrev-commit // 这样还可以看见提交的描述语句
git reset --hard HEAD^ //回到上一个版本
git reset --hard 版本号 //版本号就是commit id,只需要前几位即可
git reflog
git checkout -- 文件名
// 修改已经被添加到了暂存区,需要结合上一步命令才能丢弃修改
git reset HEAD 文件名
//想要恢复可以使用:git checkout -- 文件名 来恢复,实际上是将版本库中的文件恢复到了工作区,那么,如果版本库中没有该文件(在删除之前都没有执行 add 操作),就不能恢复了
rm 文件名
github
中
//前提:github 与 本库都有一个库,需要将两个库关联起来
git remote add origin [email protected]:GitHub用户名/版本库名.git //其中 origin 为 git 默认的远程库名字,当然也可以用自己想的
git push -u origin master //其中,-u参数在第一次推送时使用即可,表示将两个分支关联起来
git push origin master //第一次推送之后,就可以省略 -u参数了
// 这里默认用的是 ssh 协议,当然也可以直接使用 url,url使用的为 https 协议
// 后面那一串在 github 版本库中的 Clone or download 按钮那里可以复制
git clone [email protected]: GitHub用户名/版本库名.git
git remote // 只能查看远程库在本地的名字:origin(默认)
git rmote -v // 可以查看抓取和推送的地址,如果没有权限查看不到推送的地址
fork
过来,然后在自己主页 clone
下来,工作完成之后,在推到自己主页,然后在 pull request
即可git branch 分支名
git checkout 分支名 //git switch 分支名 为2.23之后版本使用的
git checkout -b 分支名 //git switch -c 分支名 为2.23之后版本使用的
git branch //得到的带 * 号的为当前分支
git merge 要合并的分支名 //如果没有发生冲突,那么就是快速合并模式,是没有提交记录的
//可以通过添加 --no-ff 参数来禁止快速合并模式,使用普通合并模式,这样可以通过 log 查看提交记录
git merge --no-ff -m "描述语句" 要合并的分支名
//要删除多个直接在后面写上分支名即可,要切换到其他分支才能删除另外的分支,不能在自己分支上进行删除自己的操作
git branch -d 分支名1 分支名2 分支名3
// 删除没有被合并的分支,使用上面的命令不会成功的
// 需要使用 -D 参数来强行删除
git branch -D 分支名
git stash // 这样你在当前分支上修改的文件,添加的文件都会被储藏起来,并且这时当前的工作区是十分干净的,没有你之前在分支上的修改
git stash lis // 查看到的记录 有 stash 号,可以用于后续指定恢复哪一个工作现场
git stash apply // 但是stach 内容不会被删除
git stash drop // 删除 stash 内容
git stash pop // 恢复并删除 stash 内容
git stash apply stash{0} // 恢复指定的 stash,这里是 stash{0}
git cherry-pick 该修改的 commitId 号 // 只复制一个修改,跟 merge 不同
push
之前先 pull
一下,保证与远程库没有冲突之后再 push
//如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to origin/。
git pull
git checkout -b 分支名 origin/分支名 //origin为远程库在本地的名字,根据你设置的来定,默认为origin
//如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,就要使用下面的命令了
git branch --set-upstream-to 分支名 origin/分支名
rebase
的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比git rebase // 然后使用 git log --graph --pretty=oneline --abbrev-commit 进行查看提交日志
git tag 标签名 // 默认在当前分支最新的提交上(HEAD)
git tag 标签名 commitId // 给指定我提交打上标签
git tag -a 标签名 -m "描述性语句" commitId // 与上面的一样的
git tag
git show 标签名
git push origin 标签名 //默认push是不是推送标签的,指定一下就可以了
git push origin --tags //推送全部的tag
git tag -d 标签名 //本地
git push origin --delete 标签名 //删除远程库中的标签
git push origin :refs/tags/标签名 //和上一条命令一样的效果
git
显示不同的颜色git config --global color.ui true
git
进行提交时自动忽略掉一些文件,不提醒 untrack file···
,这些文件不会被添加到版本库中// 注意 .gitignore 文件本身是需要加入到版本库中的
创建一个文件,将想要忽略的文件名(有后缀加上后缀)写在这个文件里面,然后将这个文件保存并命名为:.gitignore
.gitignore
文件模板合集git add -f 文件名
.gitignore
文件所存在的问题git check-ignore -v 被忽略的文件名
.git
的 config
配置文件中直接删除即可。修改当然也可以git config --global alias.别名 "命令" //设置好以后就可以使用 git 别名 来达到相同的效果了
1. 使用 git log 查看日志的时候,得到的 一串十六进制表示的数字为:commit id(只有每次提交commit时,git都会计算出来一个id号)
2. 版本记录:HEAD^:上一个版本,HEAD^^:上上一个版本,HEAD~100:往上100个版本 // 要调到指定版本需要使用版本号:只需要前面几位就行了(5,6,7位)
3. git内部有一个指向当前版本的HEAD指针,进行版本跳转时,实际上就是将指针指向指定版本,然后再更新数据即可
4. 一个文件夹中除开 .git 文件其他的都是属于工作区,.git 文件为版本库,其中重要的为: 暂存区(stage/index),还有个东西叫分支,默认有一个 master 主分支,有一个 HEAD 指针指向master。通过 add 了之后文件就添加到了版本库中的暂存区了,commit之后就提交到了分支中。
5. Git 跟踪的是修改,而不是文件,这样理解:
修改一个文件 -> git add -> 再修改一次该文件 -> git commit
修改一个文件 -> git add -> 再修改一次该文件 -> git add -> git commit
如果 git 跟踪的是文件,那么第一行操作过后,工作区就没有东西了,但事实是 git status 查看得到的是 Changes not staged for commit (提交时改变没有被暂存);而第二行操作过后,所有的修改都被添加到了暂存区中,这时候工作区已经十分干净了,所以说 Git 跟踪的是修改,而非文件
6. git 支持很多协议,如:https、ssh等。https 协议较慢,ssh 较快,默认是ssh
7. HEAD 指针是指向分支的,分支就相当于时间线,记录时间线上的修改。在一个分支上提交的修改在另外一个分支上是看不见的,这样更安全一些。当然,要是你没有指向add、commit操作,切换回来是可以看见文件的修改的,因为这就相当于手动修改文件一样,文件的修改并没有被添加到版本库中
8. 快速合并模式(Fast forward):只有一个分支对文件进行了修改,合并时。直接修改 HEAD 指针到一个分支就合并完成了,很快速。合并冲突发生时将不再是快速合并。
但是快速合并模式下,合并不会被提交,不会有记录。可以通过 --no-ff 参数来禁止快速合并模式
9. 合并冲突:不同的分支都对同一个文件进行了修改,在这两个文件合并时就会产生冲突。git status 可以告诉我们冲突的文件是哪个,然后我们对文件进行修改之后提交即可
10. 配置文件都在 `.git` 目录下的 `config` 文件中
git
与 github
连接起来的时候要添加 SSH
密匙到 github
中,不然推送不会成功。具体方法网上一收就有git bush
中复制操作使用鼠标右击来完成,不要 ctrl c
github
上创建一个版本库,然后邀请其他项目成员加入到该项目clone
项目,就可以开始编写你的代码啦push
之前,先 pull
一遍项目,如果有冲突则解决add
加入版本库,然后 commit
提交修改,最后 push
即可// 从暂存区恢复工作区
git resotre --worktree readme.txt
// 从master恢复暂存区
git restore --staged readme.txt
// 从master同时恢复工作区和暂存区
git restore --source=HEAD --staged --worktree readme.txt
// 切换目录
cd 目录
// 查看目录下的文件
ls