GitHub上传文件夹及Git命令

Git官方文档

我已经有了自己GitHub,但是我怎么对我的项目进行上传呢,普通的上传只有上传单一的文件

windows要去下载Git,mac就啥也不用了。

然后开始使用Git Bash

Git要求每台电脑都要有自己的用户名(User Name)和邮箱(Email)

所以我就自己设置下,这些均为黑框框的操作,也就是命令行,但是不要怕,我们还是有图形界面的

git config --global user.name "your name"
git config --global user.email "your email"

1.建立和上传SSH Key

找到你这台电脑的管理员账户

 

文件夹下有这个

用txt打开id_rsa.pub

然后到Github setting把这个填进去,Title随意

 

没有的话可以生成,mac下的命令是这个 ssh-keygen -t rsa -C "your_email",然后到相应文件夹下就可以找到相应的pub。

Windows的话打开git bash,输入ssh-keygen即可。

2.使用Git命令

在自己电脑里找到自己所要上传的文件夹,右键Git Bash here

git init

其文件夹下会建立一个.git文件夹

git remote add origin git@github.com:你的账户/你的仓库名称.git

注意不是https链接,而且不推荐用账号密码管理自己的git

推荐先把两边同步下,git pull表示把远端最新的版本给拉取下来

git pull --rebase origin master
git pull origin master
git add .
git commit -m 'first_commit'
git push origin master
可能你已经有项目了,那你直接clone即可,-b 可以指定分支
git clone https://github.com/llvm/llvm-project
要继续学习Git的可以继续看下去,对于初学者一般情况下 git add . git commit -m 'first_commit' git push 能解决你的所有问题,其含义为 添加你修改的文件为本次提交写一个描述且本地保存了推到远端

Git就是实现版本控制的工具,Coding界的时光机、抓罪犯利器

很多时候我们都可以输入git status去查看目前在哪了,可以解决大部分的问题

git status

我们可以看到有文件未被追踪,我们可以用 git add <file>,上文的.就是全部加一下

git add a.txt
git status

commit后就是你的改版信息,-m 是 message 的缩写

git commit -m "新增 a.txt"

我们可以通过git remote在本地repo管理远程repo地址

git remote add <remote 名称> <repo 地址>

名称一般为origin

git push可以将本地repo同步到远程repo,上文也用过

git push <远程名称> <分支名称>

git pull是和其他人一起协作一个repo时,A在本地repo commit了一个新版本并push到远程repo,B可以pull 将新版本同步到B的本地repo

git pull <远程名称> <分支名称>

如果你们拉垮了,分支冲突了,需要checkout保留你的或者他们的。如果你要覆盖掉别人的,一定要告知他。本来发生冲突就是件拉垮的事情

# 保留自己的
git checkout --ours <文件名>

# 保留别人的
git checkout --theirs <文件名>

查看本地已有分支

git branch

删除本地某个分支

# 删除指定的分支,但是如果该分支有未合并的修改,Git会拒绝删除操作
git branch -d <branch_name>
# 强制删除
git branch -D <branch_name>

如果只配置了需要输入账号密码可以使用以下命令存储下账号密码

git config --global credential.helper store

3.进阶命令

我们还可以使用git reset去回溯,可以先通过log去查看版本

git log --oneline

然后通过git reset,他又三个参数 --mixed--soft--hard,hard谨慎使用

 git reset 版本号

 git stash可以回复到版本初始的样子并把所有改动存储起来,再取出来的话pop就行了

git stash
git stash pop

git diff可以用来比较两个版本的区别

git diff <版本1> <版本2>

git log可以查看git的历史和版本号

git log
git log --oneline

git checkout回复单一档案至指定版本

git checkout <版本> <档案名称>

工作的时候会发现其实你本地的版本可能是不够的,可以用git remote去更新下

git remote update origin --prune

然后我们往往是新建一个分支,就是这样的

git checkout -b some-feature develop

建立bug修复是这样的

f. 开始Hotfix

git checkout -b hotfix-0.1.1 master    
g. 完成Hotfix

git checkout master
git merge --no-ff hotfix-0.1.1
git push

 删除本地分支,如果无法删除可以放心使用-D的

git branch -d 分支名称

回滚上一次提交

git reset --hard HEAD^

发现上次提交有误可以使用下面的语句避免重复commit,当然提交要-f

git commit --amend --no-edit

拉取第三方库

git submodule update --init --recursive

git rebase让分支更清爽,可以少掉merge,极其有用。这里推荐下git-interactive-rebase-tool,可以让rebase操作变得简单

git rebase -i HEAD~2

谨慎使用drop,建议使用squash和fixup让自己的分支更清新,确认无误可以强制push上去,谨慎使用

git push -f

修改分支后,有的时候部署会冲突,可是我们并不想保留本地的修改,可以使用以下命令,谨慎使用,git reset --hard会让修改丢失

git fetch --all
git reset --hard origin/master

其他一些高级操作请参照 文档,如果英语不错建议直接使用英语

使新.gitignore 生效

git rm -r --cached .

修改git仓库地址

git remote set-url origin <.git>

备份仓库

# 拉取所有分支
git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done

git fetch
--all git pull --all git push --mirror

以下为在mac下的操作

修改 .bash_profile展示分支

function git_branch {
  branch="`git branch 2>/dev/null | grep "^\*" | sed -e "s/^\*\ //"`"
  if [ "${branch}" != "" ];then
      if [ "${branch}" = "(no branch)" ];then
          branch="(`git rev-parse --short HEAD`...)"
      fi
      echo " ($branch)"
  fi
}

export PS1='\u@\h \[\033[01;36m\]\W\[\033[01;32m\]$(git_branch)\[\033[00m\] \$ '

vim之后source一下就是有效了

posted @ 2018-03-14 12:57  暴力都不会的蒟蒻  阅读(16842)  评论(1编辑  收藏  举报